package Visual;
import Excepciones.YaExiste;
import Logica.Aplicacion;
import Logica.Canchada;
import Logica.CargaDescarga;
import Logica.Descargadero;
import Logica.Descuento;
import Logica.Empresa;
import Logica.Equipamiento;
import Logica.Ingreso;
import Logica.Insumo;
import Logica.Lote;
import Logica.Parcela;
import Logica.Personal;
import Logica.Plantacion;
import Logica.Proveedor;
import Logica.Quimico;
import Logica.Seccion;
import Logica.Traslado;
import Logica.Vehiculo;
import java.util.Date;
import java.util.List;
import java.util.Map;

/*12/10 1:24
*Tp final
* Rotta,Damián/Klikailo,Héctor*/

public class ControladoraVisual {
    Empresa miEmpresa=new Empresa();
    Aplicacion miAplicacion=new Aplicacion();

    public ControladoraVisual() {
    }
    public Vehiculo getVehiculo(){
        return miEmpresa.getVehiculo();
    }
    public boolean añadirVehiculo(Vehiculo unVehiculo) throws YaExiste {
        return miEmpresa.añadirVehiculo(unVehiculo);
    }
    public Personal altaPersona(String apellido, String nombre, String dni, String rol) throws YaExiste{
        return miEmpresa.altaPersona(apellido,nombre,dni,rol);
    }

    public Quimico getQuimico() {
        return (Quimico) miAplicacion.getQuimico();
    }

    public Quimico añadirQuimico(String nombre, String tipo, Proveedor unProveedor, String nroInventario) throws YaExiste {
          return miEmpresa.agregarQuimico(nombre,tipo,unProveedor,nroInventario);
    }
    public Proveedor altaProveedor(String nombre, String telefono, List<Insumo> insumos){
       return miEmpresa.altaProveedor(nombre,telefono,insumos);
    }
    public List<Insumo> dameLaLista(){
       return miEmpresa.cargarListaInsumos();
    }
    
    public void altaEmpresa(String nombre, String telefono){
        Empresa unaEmpresa = new Empresa(nombre,telefono);
    }
    
    public Descargadero altaDescargadero(String numeroSec) throws YaExiste {
        return miEmpresa.altaDescargadero(numeroSec); //To change body of generated methods, choose Tools | Templates.
    }
    
    public Plantacion altaPlantacion(String propietario, String ubicacion, String tipo, String superficie, List<Parcela> parcelas,List<Ingreso> ingresos)throws YaExiste {
       return miEmpresa.altaPlantaciones(propietario, ubicacion, tipo, superficie, parcelas,ingresos);  //To change body of generated methods, choose Tools | Templates.
    }

    public List<Ingreso> obtenerListIngreso() {
        return miEmpresa.obtenerListIngresos(); //To change body of generated methods, choose Tools | Templates.
    }
    public void altaSeccion(String num) throws YaExiste{
        miEmpresa.altaSeccion(num);
    }
    public void altaLote(String nro, int kilaje) throws YaExiste{
        miEmpresa.altaLote(nro,kilaje);
    }
    public void altaEquipamiento(String nombre, String tipo, boolean obligatorio, Proveedor unProveedor, String nroInventario) throws YaExiste{
        miEmpresa.altaEquipamiento(nombre,tipo,obligatorio,unProveedor,nroInventario);
    }
    
    public void altaLeniaSeca(int cantidad, String madera, Descargadero unDescargadero, Ingreso unIngreso ){
        miEmpresa.altaLeniaSeca(cantidad,madera,unDescargadero,unIngreso);
    }
    
    public void altaLeniaVerde(int cantidad, int porcentajeHumedad, Descargadero unDescargadero, Ingreso unIngreso){
        miEmpresa.altaLeniaVerde(cantidad,porcentajeHumedad,unDescargadero,unIngreso);
    }
    
    public Parcela altaParcela(String numero,String nombreChacra, Plantacion unaPlantacion) throws YaExiste{
        return miEmpresa.altaParcela(numero,nombreChacra,unaPlantacion);
    }
    public List<Proveedor> cargarListaProveedores(){
        return miEmpresa.cargarListaProveedores();
    }
    
    public List<Plantacion>cargarListaPlantaciones(){
        return miEmpresa.cargarListaPlantaciones();
    }
    
    public Map<String,Personal> cargarListaPersonal(){
        return miEmpresa.cargarListaPersonal();
    }
    
    public List<Quimico> cargarListaQuimicos(){
        return miEmpresa.cargarListaQuimicos();
    }
    public void altaAplicacion(Date fecha,Plantacion unaPlantacion,List<Personal> personal,Quimico unQuimico){
        miEmpresa.altaAplicacion(fecha,unaPlantacion,personal,unQuimico);
    }
        
    public void altaYerbaVerde(int cantidad, String nroSeccion,int humedad, int palo){
        miEmpresa.altaYerbaVerde(cantidad,nroSeccion,humedad,palo);
    }
    public List<Plantacion> cargarPlantacionesPorFecha(Date fecha){
        return miEmpresa.cargarPlantacionesPorFecha(fecha);
    }
    public void bajaCanchada(int cantidad, String nroDeposito, String nroLote) throws Exception{
        miEmpresa.bajaCanchada(cantidad,nroDeposito,nroLote);
    }
    
    public void bajaDescuento(int nro){
        miEmpresa.bajaDescuento(nro);
    }
    
    public void bajaEmpresa(String nombre){
        miEmpresa.bajaEmpresa(nombre);
    }
    
    public void bajaDescargadero(int nro){
        miEmpresa.bajaDescargadero(nro);
    }
    
    public void bajaDeposito(int nro){
        miEmpresa.bajaDeposito(nro);
    }
    
    public void bajaCargaDescarga(Ingreso unIngreso){
        miEmpresa.bajaCargaDescarga(unIngreso);
    }
    
    public List<Quimico> cargarQuimicosPorFecha(Date fecha){
        return miEmpresa.cargarQuimicosPorFecha(fecha);
    }
    public void bajaAplicacion(Quimico unQuimico, Plantacion unaPlantacion, Date fecha){
        miEmpresa.bajaAplicacion(unQuimico,unaPlantacion,fecha);
    }

    public List<Plantacion> obtenerListPlantaciones() {
        return miEmpresa.getPlantaciones(); //To change body of generated methods, choose Tools | Templates.
    }
    
    public void altaDeposito(String nroDeposito, List<Lote> lotes) throws YaExiste{
        miEmpresa.altaDeposito(nroDeposito, lotes);
    }
    public List<Lote> cargarListaLotes(String nro){
        return miEmpresa.cargarListaLotes(nro);
    }
    
    public List<CargaDescarga> cargarListaDescargas(){
        return miEmpresa.cargarListaDescargas();
    }
    
    public void altaSalida(String destino, int kilosPropios,int kilosComprados, Date fecha, String hora, String minuto, Vehiculo vehiculo){
        miEmpresa.altaSalida(destino,kilosPropios,kilosComprados,fecha,hora,minuto,vehiculo);
    } 
    public Map<String,Vehiculo> cargarListaVehiculos(){
        return miEmpresa.cargarListaVehiculos();
    }
    
    public List<Vehiculo> cargarListaVehiculos(Date fecha){
        return miEmpresa.cargarListaVehiculos(fecha);
    }
    
    public List<Ingreso> cargarListaIngresos(Date fecha){
        return miEmpresa.cargarListaIngresos(fecha);
    }
       
    public Map<String,Seccion> cargarListaSeccion(){
        return miEmpresa.cargarListaSeccion();
    }
    
    Ingreso altaIngreso(Date fechaP, String horayMinuto, String tipoIngreso, String origen, Plantacion unaPlan, CargaDescarga unaCargaDescarga) {
        return miEmpresa.registrarIngreso(fechaP, horayMinuto, tipoIngreso, origen, unaPlan, unaCargaDescarga); //To change body of generated methods, choose Tools | Templates.
    }

    Ingreso altaIngreso(Date fechaP, String horayMinuto, String tipoIngreso, String origen, CargaDescarga unaCargaDescarga) {
        return miEmpresa.registrarIngreso(fechaP, horayMinuto, tipoIngreso, origen, unaCargaDescarga); //To change body of generated methods, choose Tools | Templates.
    }

    public Map<String, Personal> obtenerListPersonal() {
        return miEmpresa.obtenerListPersonal(); //To change body of generated methods, choose Tools | Templates.
    }

    public Map<String, Vehiculo> obtenerListVehiculos() {
        return miEmpresa.getVehiculos(); //To change body of generated methods, choose Tools | Templates.
    }

    public void altaMantenimiento(Date fechaP, List<Personal> personas, Vehiculo unVehiculo) {
        miEmpresa.altaMantenimiento(fechaP, personas, unVehiculo);
    }
    
    public CargaDescarga altaCargaDescarga(Date fecha,Ingreso unIngreso,Vehiculo unVehiculo, List<Seccion> secciones, int pesoBruto){
        return miEmpresa.altaCargaDescarga(fecha,unIngreso,unVehiculo,secciones,pesoBruto);
    }
    public List<Ingreso> cargarListaIngresos(){
        return miEmpresa.cargarListaIngresos();
    }
    public List<Canchada> cargarListaCanchadas(){
        return miEmpresa.cargarListaCanchadas();
    }
    
    
    public void altaRenglon(Personal unaPersona, Date fecha, int MinutosEnt, int MinutosSal) {
        miEmpresa.altaRenglon(unaPersona, fecha, MinutosEnt, MinutosSal); //To change body of generated methods, choose Tools | Templates.
    }
    
    public void altaTraslado(Date fecha, int hora,int minuto,List<Personal> personal ,List<Canchada> canchadas, Vehiculo unVehiculo, Descuento unDescuento){
        miEmpresa.altaTraslado(fecha,hora,minuto,personal,canchadas,unVehiculo,unDescuento);
    }
    public void altaDescuento(Date fecha, Traslado unTraslado, int nro){
        miEmpresa.altaDescuento(fecha,unTraslado,nro);
    }
    public List<Traslado> cargarListaTraslados(){
        return miEmpresa.cargarListaTraslados();
    }
    public void altaPrestamo(Date fecha, Personal unPersonal, Equipamiento unEquipamiento){
        miEmpresa.altaPrestamo(fecha,unPersonal,unEquipamiento);
    }
    public List<Equipamiento> cargarListaEquipamiento(){
        return miEmpresa.cargarListaEquipamiento();
    }

    Map<String, Descargadero> obtenerListDescargadera() {
        return miEmpresa.getDescargaderos(); //To change body of generated methods, choose Tools | Templates.
    }

    List<Proveedor> obtenerListProveedores() {
        return miEmpresa.getProveedores(); //To change body of generated methods, choose Tools | Templates.
    }
}